Skip to content

Pull Request (Reposted) : Add Support for Offline Catalog Files in OSD Software (Feature/support offline catalog) #284

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

KatsuhiroWatanabe
Copy link

Pull Request: Add Support for Offline Catalog Files in OSD Software

This update introduces support for using offline catalog files in the OSD environment, enhancing flexibility for scenarios where the default OSD module cache may not be suitable.

Background

Since mid-April, daily OSD module updates have included OS and DriverPack catalog files (JSON and XML) under the cache folder. These updates ensure access to the latest download information.

However, some users may require customized or alternative catalog files. To support this, the update allows placing user-defined catalog files in the USB\OSDCloud\Catalogs folder.

Key Features

  • Offline Catalog Support: Users can now override the default cache by placing their own catalog files in the Catalogs folder.
  • URL Validation: To prevent issues from outdated or invalid URLs in custom catalogs, a curl-based validation step has been added. This has proven effective in internal testing.
  • Non-Intrusive: This change does not affect normal operations unless the Catalogs folder is explicitly created.

Request

Please consider merging this enhancement into the master branch of the OSD project.

@KatsuhiroWatanabe KatsuhiroWatanabe force-pushed the feature/support_offline_catalog branch from b0689cf to d408f92 Compare June 20, 2025 01:29
@skyblaster
Copy link
Contributor

skyblaster commented Jun 25, 2025

This looks excellent, and since you're only excluding C: from the search path, it should work with network boot scenarios where no USB drive is present (ie. embedded in the boot.wim at X:\OSDCloud\Catalogs).

I would love to be able to define custom paths such as the following, and then leverage the "not yet implemented" cache host variable (see #272), which looks like something we could do with this patch:
"Url": "{HOSTNAME}/OSDCloud/OS/24H2-latest.wim"

@KatsuhiroWatanabe
Copy link
Author

Thank you for the feedback!

Originally, since the current OSD reloads catalog files from the cache under the module path, we wanted an option to use only company-validated catalogs (Drivers and ESDs) stored in a different location, rather than relying solely on the default module path.

While the OSD module regularly updates cached catalog files via GitHub Actions—allowing us to always use the latest versions—there is currently no way to specify and use a particular version of a catalog file.

That’s why I proposed this pull request: to optionally allow importing catalog files from drives (excluding C:) under the \OSDCloud\Catalogs path.

As you pointed out, this also enables scenarios where the catalog is embedded in the boot.wim (e.g., at X:\OSDCloud\Catalogs) or stored on USB devices. The object list will be generated from the last successfully loaded catalog file, so you can take advantage of this behavior if it fits your use case.

Our ultimate goal is to host validated catalog files either on USB or online, and always use the latest version from those sources.

I’m also planning to propose another pull request to:
Add an option to disable automatic updates of the OSD module (to prevent overwriting custom code), and
Support optional PowerShell script execution after network connection (e.g., to download company-maintained catalogs from the internet).

We don’t necessarily expect this pull request to be merged as-is, since we are already operating with a patched custom version internally. However, we would greatly appreciate it if equivalent functionality could be considered for inclusion in the official OSD module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants